<!DOCTYPE HTML>
<html>
<script>
if (window.internals)
    internals.useMockOverlayScrollbars();
</script>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<link rel="stylesheet" href="../../resources/testharness.css">
<head>
<style>
html, body {
    margin: 0;
    padding: 0;
}

#measure {
    margin: 10px;
    padding: 10px;
}

#fixedsize {
    width: 100px;
    height: 100px;
}
</style>
</head>
<body>
<div id="measure"><div id="fixedsize"></div></div>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();

    test(function() {
        var measure = document.getElementById('measure');

        // Record partial layout values for offset*.
        var measureWidth = measure.offsetWidth;
        var measureHeight = measure.offsetHeight;
        var measureTop = measure.offsetTop;
        var measureLeft = measure.offsetLeft;

        // Invalidate measure and force a full layout.
        var child = measure.firstChild;
        measure.removeChild(child);
        document.body.clientHeight;
        measure.appendChild(child);
        var forceLayout = document.body.clientHeight;

        var childOffsetTop = child.offsetTop;

        assert_equals(measureWidth, document.body.offsetWidth - 20);
        assert_equals(measureHeight, measure.offsetHeight);
        assert_equals(measureTop, childOffsetTop - 10);
        assert_equals(measureLeft, measure.offsetLeft);
    }, 'Test that partial layout works for offset{width, height, left, top} methods.');
</script>
</body>
</html>
